﻿using System;
using System.Collections.Generic;
using MemoryPack;

namespace Hsenl {
    [Serializable]
    [MemoryPackable(GenerateType.NoGenerate)]
    public abstract partial class LeafNode<T> : Node<T> where T : class, IBehaviorTree {
        public sealed override void AwakeNode(IBehaviorTree tree) {
            base.AwakeNode(tree);
        }

        public sealed override void EnableNode() {
            base.EnableNode();
        }

        public sealed override void DisableNode() {
            base.DisableNode();
        }

        public sealed override void DestroyNode() {
            base.DestroyNode();
        }

        public sealed override void ResetNode() {
            base.ResetNode();
        }

        public sealed override void AbortNode() {
            base.AbortNode();
        }

        public sealed override bool EvaluateNode() {
            return base.EvaluateNode();
        }

        public sealed override NodeStatus TickNode() {
            return base.TickNode();
        }

        public sealed override void StartRun() {
            base.StartRun();
        }

        public sealed override void Run() {
            base.Run();
        }

        public sealed override void StopRun() {
            base.StopRun();
        }

        public sealed override IteratorList<INode> ForeachChildrenExcludeGrandchild() {
            return default;
        }

        public sealed override void ForeachChildren<TD>(Action<INode, TD> action, TD userData = default) { }

        public sealed override TNode GetNodeInChildren<TNode>() {
            return default;
        }

        public sealed override TNode[] GetNodesInChildren<TNode>() {
            return null;
        }

        public sealed override void GetNodesInChildren<TNode>(List<TNode> cache) { }
    }
}